package cn.virens.common.mybatis.entity.result;

import java.util.List;

public class PageResultUtil {
    /**
     * 将分页返回列表数据进行转换
     *
     * @param <R>    返回类型
     * @param src    源数据
     * @param format 格式化函数
     * @return
     */
    public static <R> PageResult<R> format(PageResult<?> src, PageResultFormat<R> format) {
        PageResult<R> result = new PageResult<>();

        result.setList(format.apply(src.getList()));
        result.setPageSize(src.getPageSize());
        result.setPageNum(src.getPageNum());
        result.setPages(src.getPages());
        result.setTotal(src.getTotal());
        result.setSize(src.getSize());

        return result;
    }

    @FunctionalInterface
    public interface PageResultFormat<R> {

        List<R> apply(List<?> list);
    }
}
